'use strict';

module.exports = async (ctx, next) => {
    // 获取存在session中用户的Id
    let userId = ctx.session.userId;
    // 获取路径
    let path = ctx.path;
    // 当检测到用户未登录时，自动跳转至登录界面
    if (!userId) {
        // 当用户手动指定跳转登录路径时，我们给予放行
        if (path === '/login') {
            await next();
        } else {
            // 否则重定向到登录界面
            ctx.redirect('/login');
        }
    } else {
        // 用户处于登录状态时，不允许直接在浏览器地址栏中退出登录
        if (path === '/login') {
            // 当用户手动指定跳转登录界面时，禁止该行为
            ctx.redirect('/');
        } else {
            // 正常点击注销退出，给予放行
            await next();
        }
    }
}